Systém UNIX (1970) byl od prvopočátku navržen jako víceuživatelský. Tuto vlastnost převzal i systém Linux (1992). Windows byl ještě v roce 1998 stále jednouživatelský. Technicky podporoval více uživatelů, ale bez jakékoliv ochrany dat. Podpora více uživatelů přišla až v roce 2000 s Windows 2000.
Standard POSIX definuje systém oprávnění, který používají všechny unixové systémy (UNIX, GNU/Linux, macOS, iOS, Android, WebOS, Tizen...). Ten umožňuje definovat pravidla přístupových práv, aby uživatelé nemohli přistupovat k datům jiných uživatelů, zajišťuje maximální bezpečnost systému atp.
Systémy Windows si přístupová oprávní řeší po svém – tedy úplně jiným způsobem nekompatibilním se standardem POSIX.
Každý soubor a adresář má přidělena různá oprávnění (i ty skryté). Ty se vztahují na tři kategorie uživatelů: vlastníka, skupinu a ostatní. Jsou vidět v podrobném výpisu adresáře (přepínač -l):
$ ls -l $ ls -la
Výpis by mohl vypadat například takto (toto je pouze ukázkový příklad, který by ve skutečnosti těžko nastal):
Než si je objasníme, je potřeba vysvětlit co znamená první znak. Ten zobrazuje typ souboru. Znaků je víc. Pro běžné potřeby stačí znát tyto tři:
- (pomlčka) běžný soubor
d adresář (directory)
l symbolický odkaz -- "symlink" (něco jako zástupce ve Windows)
Zbylých devět znaků definuje oprávnění pro tři skupiny uživatelů:
První znak každé trojice je r čtení (read), druhý w zápis (write), třetí je x spouštění (executable). Písmeno x u adresáře znamená právo jej "otevírat" (vstupovat do něj). Pokud je na příslušném místě místo nich znak - (pomlčka), je příslušné oprávnění odepřeno.
| Právo | Význam u souboru | Význam u adresáře |
|---|---|---|
r |
Čtení souboru | Čtení názvů obsažených položek |
w |
Zápis do souboru | Vytváření souborů a adresářů |
x |
Spuštění souboru | Vstup do adresáře |
To jsou ty dva sloupce se jmény. První sloupec je vlastník, druhý název skupiny. U vlastních souborů se skupina jmenuje stejně jako vlastník a jediným členem jste pouze vy. Důvodem je, že každý uživatel musí být vždy členem alespoň jedné skupiny.
Jen pro zajímavost:
/etc/passwd. Každý je reprezentovaný unikátním číslem (UID). Číslo 0 (nula) je vyhrazeno pro správce systému (root), pro kterého se oprávnění nekontrolují. Ostatní čísla jsou běžní uživatelé, kteří jsou si z pohledu systému rovni, přičemž čísla do 1 - 100 jsou vyhrazena pro systémové účty (typicky různí démoni) a čísla 1000 a výše jsou určena pro běžné uživatele./etc/group. Princip je stejný jako u seznamu uživatelů (GID).Změny oprávnění může provádět pouze vlastník (nebo root). Ve výchozím nastavení jsou všechna nastavena tak, aby je nebylo nutné měnit. V některých konkrétních případech jsou naopak změny nezbytné (např. spouštění skriptů). Základní syntaxe je:
$ chmod <cislo> <soubor|adresar>
Parametr <cislo> je trojciferné vyjádření oprávnění v intervalu 000 až 777. První cifra je vlastník, druhá skupina, třetí ostatní. Oprávnění tvoří součet čísel 4, 2 a 1.
Příklady některých běžných oprávnění:
rwx------ 700 rw------- 600 rw-r--r-- 644 rw-rw---- 660 rwxr-wr-x 755 rwxrwx--- 770 rwxrwxrwx 777 rw-rw-rw- 666
Vlastník si ke svým souborům může práva upravovat bez omezení – rizika, že si je po odebrání práv nebude moci přidat.
Práva se kódují v oktalové číselné soustavě. Minimální je kód 000, maximální 777. Kolik to je možností? Čísla 1, 2 a 4 jsou mocniny řádů: 20 = 1, 21 = 2, 22 = 4.
Zajímavý je tento pohled:
DEC BIN práva 0 000 --- 1 001 --x 2 010 -w- 3 011 -wx 4 100 r-- 5 101 r-x 6 110 rw- 7 111 rwx
Tento způsob je oproti číselnému praktičtější:
Několik příkladů:
$ chmod +x soubor $ chmod g+r soubor $ chmod go-w soubor $ chmod o+rw soubor
u = user (vlastník), g = group (skupina), o = other (ostatní), a = all (všichni, ekvivalent ugo).
+ oprávnění přidává, - oprávnění odebírá.
Tento způsob se nejčastěji využívá pro přidání oprávnění spouštění (+x).
Pokud chybí písmeno „komu“, přidá se všem (viz první ukázkový příklad).
Tyto změny běžný uživatel provádět nesmí. Na to má oprávnění pouze root nebo uživatel s právy sudo. Pro ně se práva nekontrolují.
Jsou zde uvedeny pouze pro úplnost.
$ chown <nazev> <soubor> $ chgrp <nazev> <soubor>
Seznam uživatelů je v souboru /etc/passwd, seznam skupin v souboru /etc/group.
Linuxový terminál nabízí bohatý příkazový aparát pro správu těchto kategorií. Existují příkazy jako groups, adduser a řada dalších. I všechny tyto činnosti smí provádět pouze root nebo člen skupiny sudo.
r,w,x číselné oprávnění NNN.-rw-rw-r-- (nebo jiné)./root?x u adresáře a co u souboru?Zkuste si
Vytvořte adresář ~/prava1 a přesuňte se do něj. Další činnosti provádějte v něm.
/etc/apt/sources.list pod novým názvem zdroje.zdroje přidejte práva zápisu skupině.ascii –d do souboru ascii.txt.prg.c a přidejte právo spouštění pouze sobě..config zapište v číselném vyjádření jeho oprávnění.zaloha a nastavte mu práva rwx------.Vytvořte adresář ~/prava2 a přesuňte se do něj. Další činnosti provádějte v něm.
/etc/fstab.rw-------.disky.config.web přesměrujte výpis adresáře /etc/apache2./etc/bind si zobrazíte, pokud budete členem skupiny root? Odpověď (číslo) zapište do nového souboru bind.Vytvořte adresář ~/prava3, v něm soubor pr3. Do něj pište pouze číslované odpovědi:
Které kategorie uživatelů (vlastník, skupina, ostatní) budou moci zapisovat do souboru s právy rw-r--rw-?
Přepište předchozí oprávnění v číselném vyjádření:
Sestavte příkaz, který nastaví práva rwxr-x--- souboru ~/skript.sh.
Jaká práva adresáři skripty budou nastavena číslem 750? Vypište způsobem rwx. Výsledkem bude 10 znaků:
Přepište číselně práva souboru soubor.txt z obrázku níže: